1. Field of the Invention
The invention is in the field of computer software and more specifically in the field of application interfaces.
2. Description of the Prior Art
Computing systems are benefited by their ability to exchange data between applications. In some cases, this ability is extended to allow one application to call functions within another application. For example, it is common for a word processing program to transfer data and execute functions of a printer driver. These functions are accessed using application programming interfaces (APIs) defined for the word processing program and the printer driver.
When disparate applications must communicate with each other it is not unusual to transform data as part of the communication. This transform converts data from a format generated by one application to a format understood by the other application. In some cases scripts are used to generate transformation code that is then executed to perform a transformation. Once transformation code is generated using a script, the script is no longer an active part of the transformation process. These scripts are usually written with a specific transformation in mind and must be rewritten for each new transformation. This process can require significant effort and often includes rewriting common sections of script.
An API can be somewhat more flexible when metadata is received as input. In these cases, transformation code can determine the type of data received and perform appropriate transforms and error checking. However, even when taking advantage of metadata, current transform methods suffer significant disadvantages. For example, transforms introduce a new potential source of error that can be difficult to debug. Prior art transforms tend to be single thread processes that start at the beginning of data to be transformed and continue to the end of the data in a serial manner. They are, therefore not configurable to take advantage of dynamic multi-thread computing. Further, this serial approach makes nesting and un-nesting operations difficult. Known transforms are performed using static code configured to simply map one data field to another. Even when the transform code is generated using a script, the transformation code is static at the time of execution and therefore not configurable for dynamic optimization of the transform process.
There is a need for new application program interfaces and data transforms that overcome these and other disadvantages of the prior art.